/**
 * 用户登录状态的相关封装
 */

import * as base from '@/common/sju.base.js'
import * as nav from '@/common/sju.nav.js'
import { noLogin } from '@/config/config.js'

	/**
	 * @description 判断访问的Page是否需要登录
	 * 如果需要登录, 则判断是否已登录,未登录则跳转到登陆界面
	 * @param {string} url 打开的页面
	 */
	function checkLogin(url) {
		// 保存不需要登录的页面,如果pageUrl不在数组中存在,则需要登录
		let needLogin = true
		for (let item of noLogin) {
			if (item === url)
				needLogin = false
		}
		// 如果需要登录,并且没有登录token标识,则跳转到登陆页面
		let token = getValue('token')
		if (needLogin && base.isNull(token)) {
			base.logInfo('需要登录:' + url)
			//微信小程序,提供登录提醒
			//#ifdef MP-WEIXIN
			weixinLogin()
			//#endif
			
			//其它平台,直接跳转登录
			//#ifdef APP-PLUS || H5
			nav.redirectTo('/intake/login')
			//#endif

		} else {
			return true
		}
		return false
	}
	
	/**
	 * @description 微信小程序获取openID
	 * @param {string} nickName 微信用户名称
	 * @param {string} avatarUrl 用户用户头像
	 */
	function weixinLogin(){
		uni.login({
		  provider: 'weixin',
		  scopes:'auth_user',
		  success: function (loginRes) {
			// 获取临时code
			let code=loginRes.code
			request('/api/client/weixinLogin','post',{ code:code },true).then(res=>{
				// 把后台返回的openID保存到本地存储
				login.saveValue('openID',res.data.openID)
				// 保存token
				login.saveValue('token',res.data.token)
			})
		  }
		})
	}
	
	/**
	 * @description 本地存储 
	 * @param {string} key 保存变量的标识
	 * @param {any} value 保存的值 
	 */
	function saveValue(key, value) {
		uni.setStorageSync(key, value)
	}
	
	/**
	 * @description 从本地存储获取key数据
	 * @param {string} key 保存变量的标识
	 */
	function getValue(key) {
		let value = uni.getStorageSync(key)
		return value
	}
	
	/**
	 * @description 从本地存储清除某个key 
	 * @param {string} key 保存变量的标识
	 */
	function clearKey(key) {
		uni.removeStorageSync(key)
	}
	
	/**
	 * @description 从本地存储清除所有数据 
	 * @param {string} key 保存变量的标识
	 */
	function clearAll() {
		uni.clearStorageSync()
	}

export {
	checkLogin,
	weixinLogin,
	saveValue,
	getValue,
	clearKey,
	clearAll
}
